package de.herzog.bbp.model.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import de.herzog.bbp.model.Halle;
import de.herzog.bbp.model.Verein;

public class HalleDAO extends AbstractDAO {

	public static Halle loadById(Integer id) {
		return (Halle) getSession().load(Halle.class, id);
	}

	public static List<Halle> loadByVerein(Verein verein) {
		Criteria criteria = getSession().createCriteria(Halle.class);
		criteria.add(Restrictions.eq("verein", verein));
		@SuppressWarnings("unchecked")
		List<Halle> list = criteria.list();
		return list;
	}

	public static List<Halle> loadByVereinAndNummer(Verein verein, Integer nummer) {
		Criteria criteria = getSession().createCriteria(Halle.class);
		criteria.add(Restrictions.eq("verein", verein));
		criteria.add(Restrictions.eq("nummer", nummer));
		@SuppressWarnings("unchecked")
		List<Halle> list = criteria.list();
		return list;
	}

	public static Halle getByVereinAndNummer(Verein verein, Integer nummer) {
		List<Halle> list = loadByVereinAndNummer(verein, nummer);
		if (list.size() > 1)
			// throw new IllegalStateException("Duplicate");
			return list.get(0);
		if (list.size() == 1) {
			return list.get(0);
		} else {
			Halle halle = new Halle(verein, nummer);
			persist(halle);
			return halle;
		}
	}

	public static void insert(Verein verein, Integer nummer) {
		List<Halle> list = loadByVereinAndNummer(verein, nummer);
		if (list.size() == 0) {
			Halle halle = new Halle(verein, nummer);
			persist(halle);
		}
	}
}
